package com.example.config;

import com.example.entity.Msg;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.RootBeanDefinition;
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
import org.springframework.core.type.AnnotationMetadata;
import org.springframework.stereotype.Component;

/**
 * @author mingtian
 * @version V1.0
 * @Description spring 容器中的 bean 的信息由 BeanDefinition 描述的.
 * springIOC 底层是通过 beanDefinitionMap(ConcurrentHashMap) 存放的，所以是线程安全的
 * @date 2019/12/9 12:07
 */
@Component
public class MyImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {
    /**
     * @param importingClassMetadata 注解详细信息
     * @param registry               注册 bean
     */
    public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
        //手动注册到 Spring 容器中
        RootBeanDefinition beanDefinition = new RootBeanDefinition(Msg.class);
        registry.registerBeanDefinition("msg", beanDefinition);
    }
}
